package com.xique.park.service.command.service;

import com.alibaba.fastjson.JSONObject;
import com.xique.common.core.web.domain.AjaxResult;
import com.xique.park.bean.domain.ParkCarMngtype;
import com.xique.park.bean.domain.ParkCarMngtypeLane;
import com.xique.park.bean.request.web.mngType.MngTypeDeleteRequest;

import java.util.List;

/**
 * 车辆管理类型命令下发
 *
 * @author: xique
 */
public interface IParkCarMngTypeCommandService {
    /**
     * 单个设备下发管理类型
     *
     * @param parkId 车场ID
     * @param sn     设备序列号
     * @param list   车辆管理类型列表
     * @return 下发结果
     */
    AjaxResult downMngType(Long parkId, String sn, List<ParkCarMngtype> list);

    /**
     * 车场所有设备下发管理类型
     *
     * @param parkId      车场ID
     * @param list        车辆管理类型列表
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult downMngType(Long parkId, List<ParkCarMngtype> list, String reminderMsg);

    /**
     * 单个设备删除管理类型
     *
     * @param sn      设备序列号
     * @param request 删除车辆管理类型request
     * @return 下发结果
     */
    AjaxResult delMngType(String sn, MngTypeDeleteRequest request);

    /**
     * 车场所有设备删除管理类型
     *
     * @param parkId      车场ID
     * @param request     删除车辆管理类型request
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult delMngType(Long parkId, MngTypeDeleteRequest request, String reminderMsg);

    /**
     * 单个设备下发管理类型通道通行权限
     *
     * @param parkId 车场ID
     * @param sn     设备序列号
     * @param list   车辆管理类型列表
     * @return 下发结果
     */
    AjaxResult downMngTypePassAuth(Long parkId, String sn, List<ParkCarMngtypeLane> list);

    /**
     * 车场所有设备下发管理类型通道通行权限
     *
     * @param parkId      车场ID
     * @param list        车辆管理类型列表
     * @param reminderMsg 提示消息
     * @return 下发结果
     */
    AjaxResult downMngTypePassAuth(Long parkId, List<ParkCarMngtypeLane> list, String reminderMsg);

    /**
     * 获取记录下发状态
     *
     * @param parkId    车场ID
     * @param recIdList /
     * @return 记录下发状态
     */
    JSONObject getCommandStatus(Long parkId, List<Long> recIdList);

    /**
     * 查询通行权限记录下发状态(车场所有设备)
     *
     * @param laneId 通道ID
     * @param recId  /
     * @return 通行权限记录下发状态
     */
    JSONObject getPassAuthCommandStatus(Long laneId, Long recId);
}
